package com.example.administrator.nurse.util;

import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;

import java.io.FileDescriptor;

/**
 * Created by Administrator on 2016/4/15.
 */
public class ImageResizer {
    private static final String TAG="ImageResizer";
    public ImageResizer(){

    }
    public Bitmap decodeSimpleedBitmapFromResource(Resources res,int resId,int reqWidth,int reqHeight){
        final BitmapFactory.Options options=new BitmapFactory.Options();
        options.inJustDecodeBounds=true;
        BitmapFactory.decodeResource(res,resId,options);
        options.inSampleSize=calculateInSampleSize(options,reqWidth,reqHeight);
        options.inJustDecodeBounds=false;
        return BitmapFactory.decodeResource(res,resId,options);
    }
    public Bitmap decodeSampledBitmapFromFileDescriptor(FileDescriptor fd,int reqWidth,int reqHeight){
        final BitmapFactory.Options options=new BitmapFactory.Options();
        options.inJustDecodeBounds=true;
        BitmapFactory.decodeFileDescriptor(fd,null,options);
        options.inSampleSize=calculateInSampleSize(options,reqWidth,reqHeight);
        options.inJustDecodeBounds=false;
        return BitmapFactory.decodeFileDescriptor(fd,null,options);
    }
    public int calculateInSampleSize(BitmapFactory.Options options,int reqWith,int reqHeight){
        if (reqWith==0||reqHeight==0){
            return 1;
        }
        final int height=options.outHeight;
        final int width=options.outWidth;
        int inSampleSize=1;
        if (height>reqHeight||width>reqWith){
            final int halfHeight=height/2;
            final int halfWidth=width/2;
            while ((halfHeight/inSampleSize)>=reqHeight&&(halfWidth/inSampleSize)>=reqWith){
                inSampleSize*=2;
            }
        }
        Log.d(TAG,"simpleSize:"+inSampleSize);
        return inSampleSize;
    }
}
